package com.framework.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.framework.entity.ter.TerTerminalInfo;
import com.framework.view.PurchaserView;
import com.framework.view.TerManagementBean;
import com.framework.view.TerminalSummaryDao;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 功能描述: 终端信息
 *
 * @author ck
 * @date 2018/9/6 13:54
 */
public interface TerminalInfoDao extends BaseMapper<TerTerminalInfo> {
	/**
	 * 昨天、本月激活数量
	 * @param agentId
	 * @param type
	 * @param isOwn
	 * @return
	 */
	int queryActivationCount(@Param("agentId") Long agentId, @Param("type") int type,@Param("isOwn")Integer isOwn);

	/**
	 * 代理商的终端列表
	 * @param agentId
	 * @param pageNo
	 * @param startSn
	 * @param endSn
	 * @param model
	 * @param isActivation
	 * @return
	 */
	List<TerTerminalInfo> queryTerminalList(@Param("agentId") Long agentId, @Param("pageNo") Integer pageNo, @Param("startSn") String startSn, @Param("endSn") String endSn, @Param("model") String model, @Param("isActivation") Integer isActivation);

	/**
	 * 机具汇总
	 * @param agentId
	 * @return
	 */
	TerminalSummaryDao querySummarySum(@Param("agentId") Long agentId);

	/**
	 * 根据机具类型、所属人查询机具的数量
	 * @param terminalType
	 * @param agentId
	 * @param isActivation
	 * @return
	 */
	int queryTerByTypeCount(@Param("terminalType") Integer terminalType, @Param("agentId") Long agentId,@Param("isActivation")Integer isActivation);

	/**
	 * 根据机具类型、所属人查询机具的列表
	 * @param terminalType
	 * @param agentId
	 * @param isActivation
	 * @return
	 */
	List<TerTerminalInfo> queryTerByTypeList(@Param("terminalType") Integer terminalType, @Param("agentId") Long agentId,@Param("isActivation")Integer isActivation);

	/**
	 * 根据sn查询终端信息 sn有区间和单个
	 * @param params
	 * @return
	 */
	List<TerTerminalInfo> queryTerListByNo(Map<String,Object> params);

	/**
	 * 乐刷修改商户号
	 * @param terTerminalInfo
	 * @return
	 */
    Integer updateTerminalForLeShua(TerTerminalInfo terTerminalInfo);

	/**
	 * 查询终端列表 后台管理
	 * @param params
	 * @return
	 */
	List<Map<String,Object>> queryTerminalListByAdmin(Map<String,Object> params);

	/**
	 * 查询终端数量 后台管理
	 * @param params
	 * @return
	 */
	Integer queryTerminalCountByAdmin(Map<String,Object> params);

	/**
	 * 修改机器
	 * @param terminal
	 */
	void updateTerminal(@Param("ex")TerTerminalInfo terminal);

	/**
	 * 查询通用需要返现的活动机器
	 * @param terminalType
	 * @param deptId
	 * @param activAmount
	 * @return
	 */
	List<PurchaserView> queryActivList(@Param("terminalType") Integer terminalType, @Param("deptId") Long deptId, @Param("activAmount")BigDecimal activAmount);

	/**
	 * 根据id查询终端信息
	 * @param terminalId
	 * @return
	 */
	TerTerminalInfo queryTerminalById(@Param("terminalId") Long terminalId);

	/**
	 * 循环插入数据
	 * @param terlist
	 * @return
	 */
    Integer insertList(@Param("list") List<TerTerminalInfo> terlist);




	/**
	 * 根据条件查询个人的相关机具
	 * @param params
	 * @return
	 */
    List<TerManagementBean> queryTerminalListByAgent(Map<String, Object> params);

	/**
	 * 查询sn的所属情况
	 * @param deptId
	 * @param snList
	 * @return
	 */
    List<Map<String, Object>> queryTerminalOwner(@Param("deptId") Long deptId,@Param("snList") String[] snList);

	/**
	 * 查询上个月激活机器数量
	 * @param agentId
	 * @param date
	 * @return
	 */
	Integer queryLastMonthActivCount(Long agentId, String date);

	/**
	 * 查询个人激活机器数量
	 * @param agentId
	 * @return
	 */
    int queryTLCount(@Param("agentId") Long agentId);
}
